﻿ ______________________  _________  _____________________  ___
 |поле ввода аргумента|  |условие|  |поле ввода значения|  |v|Знак
 ----------------------  ---------  ---------------------  ---

поле ввода аргумента - едитбокс в котором можно вводить всё что угодно, 
оно парсится и распознаются такие конструкции:
R0 R1 R2 R3 R4 R5 SP PC @число_без_знака
всё остальное игнорируется. @число_без_знака - это адрес ячейки памяти.

условие - выпадающий список условий:
сравнения чисел
0   ==
1   !=
2   >
3   >=
4   <
5   <=
Битовые операции
6   &
7   |
8   ^

При сравнении - условие выполнено, если результат сравнения истина.
При битовых операциях - условие выполнено, если результат битовой операции не 0.

поле ввода значения - едитбокс в котором можно вводить всё что угодно, 
оно парсится и распознаются такие конструкции:
R0 R1 R2 R3 R4 R5 SP PC @число_без_знака
и число, со знаком, если на конце есть точка - то это число десятичное, иначе - восьмеричное

Знак - чекбокс, означающий, что сравнение нужно делать знаковое, иначе - беззнаковое.


enum class Condition
{
    EQ = 0,
    NE,
    GT,
    GE,
    LT,
    LE,
    AND,
    OR,
    XOR
};

enum class ArgType
{
    CONST = -1,
    R0 = 0,
    R1,
    R2,
    R3,
    R4,
    R5,
    SP,
    PC,
    MEM
};

Condition   Cond;               // условие
bool        bSign;              // флаг знакового сравнения
ArgType     LArg, RArg;         // тип аргумента
uint16_t    wLValue, wRvalue;   // значения адреса памяти или константы.

Допустим, константа может быть и слева. Но тогда надо как-то запретить условие, когда константа с обеих сторон.

Парсер чисел есть в отладчике.

примерный алгоритм работы:
1. конструкцией switch (LArg) case получаем левое значение
2. конструкцией switch (RArg) case получаем правое значение
3. конструкцией switch (Cond) case выполняем операцию сравнения
    Возвращаем результат true\false



=========================================================================
Условия на доступ к памяти.
Условие может быть выполнено только если условие срабатывания на запись.
Левый аргумент - по умолчанию содержимое ячейки, на которую условная точка поставлена.
там надо левое поле ввода сделать не активным, и туда поместить адрес точки останова.
Далее - всё как в основном случае.
